/*
* leetcode 309. 买卖股票的最佳时机含冷冻期
*
给定一个整数数组prices，其中第  prices[i] 表示第 i 天的股票价格 。​
设计一个算法计算出最大利润。在满足以下约束条件下，你可以尽可能地完成更多的交易（多次买卖一支股票）:
卖出股票后，你无法在第二天买入股票 (即冷冻期为 1 天)。
注意：你不能同时参与多笔交易（你必须在再次购买前出售掉之前的股票）。
* */
/*
* */
import java.util.*;
class Solution {
    public int maxProfit(int[] prices) {
        int n=prices.length;
        //f表示可交易  g表示买入  h表示冷冻期
        int[] f=new int[n+1],g=new int[n+1],h=new int[n+1];
        g[0]=-prices[0];
        for(int i=1;i<n;i++){
            f[i]=Math.max(f[i-1],h[i-1]);
            g[i]=Math.max(f[i-1]-prices[i],g[i-1]);
            h[i]=g[i-1]+prices[i];
        }
        return Math.max(f[n-1],h[n-1]);
    }
}